package com.ssy.lingxi.platform.template.service.service.web;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.model.vo.PageVO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.platform.template.api.model.dto.inner.MemberPurchaseInnerDTO;
import com.ssy.lingxi.platform.template.service.entity.door.MemberPurchase;
import com.ssy.lingxi.platform.template.service.model.dto.common.CollectDTO;
import com.ssy.lingxi.platform.template.service.model.dto.common.IdDTO;
import com.ssy.lingxi.platform.template.service.model.dto.common.MemberIdAndRoleIdDTO;
import com.ssy.lingxi.platform.template.service.model.dto.web.SavePurchaseDTO;
import com.ssy.lingxi.platform.template.service.model.qo.MemberPurchaseQO;
import com.ssy.lingxi.platform.template.service.model.vo.web.MemberPurchaseListVO;
import com.ssy.lingxi.platform.template.service.model.vo.web.MemberPurchaseMainVO;

import java.util.List;

/**
 * @menu web - 会员采购门户 - 业务处理层
 * @author fhj
 * @version 2.0.0
 * @date 2021/04/14
 */
public interface MemberPurchaseWebService {

    Wrapper<Void> saveCurrMemberPurchase(SavePurchaseDTO dto, UserLoginCacheDTO user);

    Wrapper<MemberPurchase> findCurrMemberPurchase(UserLoginCacheDTO user);

    Wrapper<PageData<MemberPurchaseListVO>> memberPurchaseList(MemberPurchaseQO qo);

    Wrapper<List<MemberPurchase>> activeMemberPurchase();

    Wrapper<List<MemberPurchase>> newAddMemberPurchase();

    Wrapper<MemberPurchaseMainVO> memberPurchaseMain(IdDTO dto, Long memberId, Long roleId, UserLoginCacheDTO user);

    Wrapper<MemberPurchaseMainVO> findByMemberIdAndRoleId(MemberIdAndRoleIdDTO dto);

    Wrapper<Void> collect(CollectDTO dto, UserLoginCacheDTO user);

    Wrapper<PageData<MemberPurchase>> collectList(PageVO dto, UserLoginCacheDTO user);

    Wrapper<Boolean> exitMemberPurchase(MemberPurchaseInnerDTO dto);
}
